home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Dr. Windows 3
/
dr win3.zip
/
dr win3
/
VISUALBA
/
VBCTRL.ZIP
/
VBMBTTN.TXT
< prev
next >
Wrap
Text File
|
1993-01-01
|
5KB
|
109 lines
Multi-Button Control for Visual Basic by Mark Gamber 1992
The Multi-Button is a single control which divides itself into several small
"sub-buttons", each acting as an independent button in itself. The Multi-Button
may be used for multiple choice entries, array and matrix entries, spreadsheet
headers and so on. Each sub-button may be individually raised or pressed under
software control and the raised and lowered background and text colors may be
changed for an entire control. If you have the original version, this version
far surpasses it's functionality as will be demostrated. To use the button,
copy VBMBTTN.VBX to your Visual Basic directory, select "Add File..." from the
Visual Basic "File" menu and select VBMBTTN.VBX from the list of files. Once
selected, a Multi-Button icon should appear in the toolbox.
Limitations:
The Multi-Button is capable of dividing into 256 sub-buttons. Should you go
beyond that limit, you will be greeted with a UAE. There is no error checking
provided to ensure you stay within that limit as it could be exceeded by any
combination of things. Therefore, it is up to the programmer to ensure no more
than 256 sub-buttons are displayed by a single Multi-Button.
Events:
Only one event is supported directly by the Multi-Button. "Clicked" provides
the sub-button number and whether the button click raised or lowered the sub-
-button. "Button" always begins with 0 and runs to 255. The actual range to
expect depends on the number of sub-buttons displayed. "Pressed" is 1 if the
sub-button was pressed, 0 if it was raised by the click event.
GotFocus and LostFocus are supported by Visual Basic. Basically, since the
control cannot use keyboard input, it should never get the focus. In the off
chance that it does, you should use GotFocus to immediately change the input
focus to another control on a form.
Properties:
The Multi-Button numbers it's sub-buttons internally from 0 to 255. You may
change the number DISPLAYED by altering the value in "NumBase". NumBase is
added to the internal sub-button count as the sub-buttons are painted. Thus, if
you want a range from 1 to 10, you would set NumBase to 1 and size the control
so 10 sub-buttons are displayed.
Numbers aren't the only thing displayed. By selected "True" for the "Alpha"
property, letters may be displayed. In the case of letter labelling, a NumBase
of 0 will cause the first sub-button to display as the letter "A". The sub-
-buttons are incremented from "A" to "Z", "AA" to "AZ", "BA" to "BZ" and so on
up to "ZZ".
"Width" and "Height" are supported directly by the Multi-Button and are
available in pixel format only. They comprise the width and height of the
entire control. To set or look up the size of a sub-button, use the "SubWidth"
and "SubHeight" properties. They, too, are available only in pixel format.
Note that changing the SubWidth or SubHeight values should be followed by a
change in size to the entire control to prevent partial sub-buttons from
appearing. This is easily accomplished by setting the control size to the
number of sub-buttons to be displayed times the Subsize changed.
The sub-button background color may be set for both sub-button states. The
default values are light gray for both states. In addition, the text color may
be set for both conditions. Defaults are black if raised, blue if pressed. The
"BackUp" property sets and retrieves the raised color value and "BackDown" sets
and retrieves the pressed color value of the sub-button background. "TextUp"
and "TextDown" perform the same function for the sub-button text. Setting these
properties affects ALL sub-buttons in a given control.
Methods:
Not being very accustomed to Visual Basic terminology, I am not too sure of
the difference between a property and a method but this seems to fall more into
the latter catagory.
A sub-button may be checked to see if it's raised or pressed. In addition, a
sub-button may be raised or pressed under software control through the "Value"
method. Since there may be up to 256 sub-buttons per Multi-Button, this is an
array, each array part specifying a single sub-button. Pressing a sub-button
consists of setting the Value for a sub-button to a non-zero number and raising
a sub-button consists of setting a sub-button value to zero. Again, the array
ALWAYS starts a ZERO, regardless of the button number displayed which only
reflects the NumBase value. For example, if your Multi-Button is displaying
sub-buttons from 1 to 10 and you want sub-button 1 pressed, you would:
MultiBtn1.Value( 0 ) = 1
To see if the same button has been pressed:
if MultiBtn1.Value(0) <> 0 then ...
Additional information:
Thanks to PCC David for his suggestions leading to this version of the
control. This is free software given two conditions:
1. Any information pertaining to the author (me) MAY NOT be changed.
2. I'm not liable. Period.
MBDEMO has been included along with the Visual Basic source for the program
to serve as an example of Multi-Button use. Questions, bugs and complaints are
welcome. E-Mail to PCA MarkG on America Online. No substitutes. I don't take
phone calls, letters or BBS mail.
Mark Gamber (PCA MarkG)